package py.cursoweb.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServlet;

import org.hibernate.Session;
import org.hibernate.Transaction;

import py.cursoweb.model.Proveedor;

public class ProveedorManager {
	//Datos de prueba .... aun no conecta a base de datos
	private static ArrayList<Proveedor> proveedores = null;
	
	public ProveedorManager() {
		if (proveedores == null) {
			proveedores = new ArrayList<Proveedor>();
		}
	}
	
	public List<Proveedor> getProveedores() throws Exception {
		Session session = getSession();
		Transaction trans = session.beginTransaction();
		List<Proveedor> proveedores;
		
		try {			
			proveedores = session.createQuery("from Proveedor").list();
			trans.commit(); 
		}catch(Exception ex) {
			ex.printStackTrace();
			trans.rollback();
			
			throw ex;
		}			 
		
		return proveedores;
	}
	
	public void addProveedor(Proveedor proveedor) {
		proveedores.add(proveedor);
	}
	
	public Proveedor getProveedor(Integer id) {
		try {
			proveedores = (ArrayList<Proveedor>) this.getProveedores();
			for(Proveedor proveedor : proveedores) {
				if (proveedor.getId().equals(id))
					return proveedor;
			}
		} catch (Exception e) {
			return null;
		}
		return null;
	}
	
	
	//acceso a base de datos
	public void saveProveedor(Proveedor proveedor) throws Exception {
		Session session = getSession();
		Transaction trans = session.beginTransaction();
		
		try {			
			session.saveOrUpdate(proveedor);
			trans.commit();
		}catch(Exception ex) {
			ex.printStackTrace();
			trans.rollback();
			
			throw ex;
		}			
	}
	
	public void deleteProveedor(Proveedor proveedor) throws Exception {
		Session session = getSession();
		Transaction trans = session.beginTransaction();
		
		try {			
			session.delete(proveedor);
			trans.commit();
		}catch(Exception ex) {
			ex.printStackTrace();
			trans.rollback();
			
			throw ex;
		}			
	}
	
	public Session getSession() {
		return HibernateUtil.getSessionFactory().getCurrentSession();
	}

}
